package com.gpnu7_412.yanzhi.mapper;

import com.gpnu7_412.yanzhi.dto.ConciseUserDto;
import com.gpnu7_412.yanzhi.entity.User;
import com.gpnu7_412.yanzhi.dto.UserMessageDto;

import java.util.List;

/**
 * @author ZZH
 * @author HJJ
 */
public interface UserMapper {
    /**
     * 添加用户
     * @param user 用户对象
     * @return 影响条数
     */
    Integer insert(User user);

    /**
     * 根据用户ID删除用户
     * @param userId 用户ID
     * @return 影响条数
     */
    Integer deleteById(Integer userId);

    /**
     * 用户更新邮箱
     * @param userId 用户ID
     * @param newEmail 新邮箱
     * @return 影响条数
     */
    Integer updateEmail(Integer userId, String newEmail);
    /**
     * 用户更改密码
     * @param userId 用户ID
     * @param newPassword 新密码
     * @return 影响条数
     */
    Integer updatePassword(Integer userId, String newPassword);
    /**
     * 用户修改基本信息
     * @param userMessageDto 用户详情
     * @return 影响条数
     */
    Integer updateBaseMessage(UserMessageDto userMessageDto);
    /**
     * 用户修改头像
     * @param userId 用户ID
     * @param avatar 用户新头像
     * @return 影响条数
     */
    Integer updateAvatar(Integer userId, String avatar);

    /**
     * 根据用户ID查找基本信息
     * @param userId 用户ID
     * @return 用户对象
     */
    User selectById(Integer userId);
    /**
     * 根据邮箱查找用户
     * @param email 用户邮箱
     * @return 用户对象
     */
    User selectByEmail(String email);
    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return 用户信息对象
     */
    UserMessageDto getUserMessageById(Integer userId);

    /**
     * 获取所有用户
     * @return 简明用户对象列表
     */
    List<ConciseUserDto> selectAllUsers();

    /**
     * 根据给定的条件查询用户
     * @param userId 用户ID
     * @param userName 用户名
     * @param email 用户邮箱
     * @return 简明用户对象列表
     */
    List<User> selectByCondition(Integer userId, String userName, String email);

    /**
     * 根据用户名模糊搜索用户
     * @param userName 用户名
     * @return 简明用户对象列表
     */
    List<ConciseUserDto> selectConciseUsersByName(String userName);

    /**
     * 根据邮箱前缀模糊搜索用户
     * @param email 邮箱
     * @return 简明用户对象列表
     */
    List<ConciseUserDto> selectConciseUsersByEmail(String email);



//    /**
//     * 获取对应用户的权限信息
//     * @param userId 用户ID
//     * @return 权限
//     */
//    String selectPermission(Integer userId);





    //查询用户密码
    String selectPassword(Integer userId);

    // 获取所有用户
    List<User> selectAllUser();

//    int delete(@Param("userId") int userId);
//    int deleteByIds(@Param("userIds") int[] userIds);
//
//    int update(User user);
//    int dynamicUpdate(User user);
//
//    List<User> selectAll();
//    User selectById(int id);
//
////    List<User> selectByCondition(@Param("userName") String userName, @Param("password") String password);
////    List<User> selectByCondition(Map map);
//    List<User> selectByCondition(User user);
//
//    List<User> selectByConditionSingle(User user);
}
